package cn.common.freemarker;

import java.math.BigDecimal;
import java.util.List;

import freemarker.template.SimpleNumber;
import freemarker.template.SimpleScalar;
import freemarker.template.TemplateMethodModelEx;
import freemarker.template.TemplateModelException;

/***
 *	把长字符串截断后加"..." ,默认超过20后截断
 *${StringEllipsis("asdf"!)}
 *${StringEllipsis("asdf"!,32)}
 */
public class StringEllipsis implements TemplateMethodModelEx {

	@Override
	public Object exec(List args) throws TemplateModelException 
	{
		if (args.size()<1)   
			return new SimpleScalar(""); 
		
		String str;
		Integer len=20;
		
		if(args.get(0) instanceof SimpleScalar)
			str=((SimpleScalar)args.get(0)).getAsString();
		else
			return new SimpleScalar("");

		if(args.size()>1&&args.get(1) instanceof SimpleNumber)
			len=((BigDecimal)((SimpleNumber)args.get(1)).getAsNumber()).intValue();
		
		if(str.length()>len)
			return new SimpleScalar("<span title=\""+str.replaceAll("\"", "&quot;")+"\">"+str.substring(0, len)+"...</span>");
			
        return new SimpleScalar(str);  
	}

}
